Skip to content

feat: implement terminal style chat history#1778

Open
PratyushChauhan wants to merge 13 commits intopingdotgg:mainfrom
PratyushChauhan:main
Open

feat: implement terminal style chat history#1778
PratyushChauhan wants to merge 13 commits intopingdotgg:mainfrom
PratyushChauhan:main

Conversation

@PratyushChauhan
Copy link
Copy Markdown

@PratyushChauhan PratyushChauhan commented Apr 6, 2026

closes #1777

What Changed

Pressing / in the composer input navigates through previously sent user messages, shell-style. The live draft is saved when you first press and restored when you back past the most recent message. History index resets on send.

Why

Retyping or slightly tweaking a previous prompt is a common workflow. Every terminal does this — it's muscle memory. The composer already had the full message history available; this just wires / into onComposerCommandKey (where Enter/Tab/menu-navigation already live) using two refs. No new files, no new state, no re-renders.

UI Changes

No visual changes — interaction only. Navigation only activates when no autocomplete menu is open, so @-mention and /-command menus are unaffected.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Low Risk
Low risk UI-only keyboard handling change in ChatView that reads prior user messages; main risk is minor UX edge cases around history bounds and pending-input states.

Overview
Adds terminal-style history navigation to the chat composer. Pressing ArrowUp cycles backward through previously sent user messages and ArrowDown moves forward, restoring the saved live draft when returning to index -1.

History state is kept in refs (historyIndexRef, savedDraftRef) and is reset whenever the composer is cleared (thread reset, normal send, plan follow-up submit, or standalone slash-command handling), and navigation is disabled while pending user-input progress is active.

Reviewed by Cursor Bugbot for commit 0ed3e22. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add terminal-style chat history navigation to the composer with ArrowUp/ArrowDown

  • Adds ArrowUp/ArrowDown key handling in ChatView.tsx to navigate previously sent user messages in the active thread.
  • Saves the in-progress draft when entering history mode and restores it when navigating back to index -1.
  • Resets history state whenever the composer is cleared (after send, slash command, or thread cleanup).
  • Navigation is disabled while activePendingProgress is truthy.

Macroscope summarized 0ed3e22.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 6, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 26890b55-558c-49b7-8e7c-1e60979d04d1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 6, 2026
@PratyushChauhan
Copy link
Copy Markdown
Author

Video:

2026-04-06.14-55-36.mp4

- Clear navigation history when resetting the local composer state
- Drop any saved draft so a new thread starts clean
@github-actions github-actions bot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Apr 6, 2026
- Unify ArrowUp/ArrowDown prompt history handling in ChatView
- Preserve draft restoration when leaving history mode
@github-actions github-actions bot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 6, 2026
@macroscopeapp
Copy link
Copy Markdown
Contributor

macroscopeapp bot commented Apr 6, 2026

Approvability

Verdict: Needs human review

This PR introduces a new user-facing feature (arrow key navigation through chat history) that changes how users interact with the chat composer. While self-contained and straightforward, new interaction patterns warrant human review to ensure the UX meets expectations.

You can customize Macroscope's approvability policy. Learn more.

- Clear prompt history state when sending a plan or slash command
- Prevent stale draft restoration after submission
- Recompute the composer trigger after loading the next draft
- Keeps autocomplete state in sync with the restored prompt
- Use double quotes consistently in ChatView draft/history state
- Keep prompt history navigation behavior unchanged
- Skip ArrowUp/ArrowDown message history navigation while progress is pending
- Prevents input state from being interrupted by active agent updates
- Restore the collapsed composer cursor after draft recall
- Recompute trigger state from the adjusted cursor position
@github-actions github-actions bot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Apr 7, 2026
- Ignore ArrowUp/ArrowDown history navigation while progress is pending
- Preserve existing history traversal once the pending state clears
@github-actions github-actions bot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 7, 2026
Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 7d90559. Configure here.

- Keep the expanded cursor position separate from the collapsed composer cursor
- Detect composer triggers from the full draft text instead of the collapsed cursor
- Recompute the cursor and trigger from the restored text length
- Keep the prompt ref in sync before updating composer state
@PratyushChauhan
Copy link
Copy Markdown
Author

addressed potential issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: [UX] Terminal style history for chat input text field.

1 participant